//package com.bai.websocketandmybatisplus.web.websocket;
//
//import com.bai.websocketandmybatisplus.config.GetHttpSessionConfig;
//
//import javax.servlet.http.HttpSession;
//import javax.websocket.*;
//import javax.websocket.server.ServerEndpoint;
//import java.io.IOException;
//import java.util.Map;
//import java.util.Set;
//import java.util.concurrent.ConcurrentHashMap;
//
//
//@ServerEndpoint(value = "/chat",configurator = GetHttpSessionConfig.class)
//public class ChatEndpointHM {
//
//
//    private static final Map<String, Session> onLiveUsers = new ConcurrentHashMap<>();
//    //所有用户用同一个集合.key:(spring)用户名？ value:(Session) 单个用户的线程
//    private HttpSession httpSession;
//    /**
//     * 建立WebSocket连接后被调用
//     * @param session
//     */
//    @OnOpen
//    public void onOpen(Session session, EndpointConfig sec) {
//        // 1.获取HttpSession
//        this.httpSession = (HttpSession) sec.getUserProperties().get(HttpSession.class.getName());
//        String user = (String) this.httpSession.getAttribute("user");
//        // 2.将会话保存到onLiveUsers集合
//        onLiveUsers.put("username",session);
//        // 3.广播消息，需要将登录的所有用户推送给所有用户
//
//        broadcastAllUsers();
//    }
//
//    private void broadcastAllUsers(String message) {
//        // 遍历map集合
//        Set<Map.Entry<String, Session>> entries = onLiveUsers.entrySet(); //entrySet():用于返回一个包含所有键值对（Map.Entry）的集合
//        for (Map.Entry<String, Session> entry : entries) {
////            获取所有用户对应的Session对象
//            Session session = entry.getValue();
//            try {
//                session.getBasicRemote().sendText(message); // 发送同步消息
//            } catch (IOException e) {
//                throw new RuntimeException(e);
//            }
//        }
//    }
//
//    /**
//     *
//     * @param message
//     */
//    @OnMessage
//    public void onMessage(String message) {
//
//    }
//
//    @OnClose
//    public void onClose(Session session) {
//
//    }
//}
